字典,数组,集合区别

您所在的位置:网站首页 数组 字典区别 字典,数组,集合区别

字典,数组,集合区别

2024-07-14 05:27| 来源: 网络整理| 查看: 265

1.不可变数据字典(NSDicionary)

字典:用来存储具有一一对应关系的数据. 一个key 对应一个 value ,key起到了唯一标示的作用,key必须是唯一的,但是一个vlaue可以对应多个key. 字典存储的是无序的元素,一对键值对组成了字典中的一个元素.

①.不可变字典初始化赋值

//笑笑语法 NSDictionary *dic = @{@"name":@"zhangdan",@"age":18,@"gender":@"man"}; //初始化 NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: @"放弃",@"abandon",@"对象",@"object",@"索引",@"index", nil]; NSLog(@"%@",dictionary); //遍历构造器方法 NSDictionary *dictionary1 = [NSDictionary dictionaryWithObjectsAndKeys: @"xiaozang",@"name",@"18",@"age",@"23342432",@"phone",nil]; NSLog(@"%@",dictionary1); ②.求字典元素个数,即获取所有的key和value //获取元素的个数 NSUInteger num = [dictionary1 count]; NSLog(@"%ld",num); //获取所有的key for (NSString *temp in [dictionary1 allKeys] ) { NSLog(@"%@",temp); }  NSArray *array = [dictionary1 allKeys]; NSLog(@"%@",array);    //根据key获取对应的value    NSString *value = [dictionary1 objectForKey:@"age"]; ③.遍历字典:取得key,和value //字典遍历:取得的是key,然后根据key再获取对应的value for (NSString *temp in [dictionary1 allKeys] ) { NSString *value = [dictionary1 objectForKey:temp]; NSLog(@"%@ = %@",temp,value); } ④.其他一些操作 //1.判断是否和另一个字典相同 - (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary; //2.同过字典中所有的vlaue给所有的keys排序,用到block语法. - (NSArray *)keysSortedByValueUsingComparator:(NSComparator)cmptr 2.可变字典(NSMutableDictionary)

可变字典继承不可变字典,继承不可变字典内的方法,同时增加了删除,添加,修改操作.

①.创建字典对象,初始化赋值操作

//笑笑语法 NSMutaleDicrtionary *mut = [@{@"name":@"zhangdan",@"age":12} mutableCopy]; //初始化 NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init]; //便利构造器方法 NSMutableDictionary *mutable = [NSMutableDictionary dictionaryWithCapacity:1]; //便利构造器创建对象方法  NSMutableDictionary *mutable1 = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"21",@"age",@"asdf",@"name",nil]; NSLog(@"%@",mutable1);

②向可变数据字典中,添加,删除,修改元素 //往字典中添加元素. [mutable setObject:@"13" forKey:@"age"]; NSLog(@"%@",mutable); //根据key删除对应的元素 [mutable removeObjectForKey:@"age"]; NSLog(@"%@",mutable); //修改key对应的value [mutable setObject:@"1sad8" forKey:@"age"]; NSLog(@"%@",mutable); [mutable setValue:@"17" forKey:@"age"]; //移除所有的元素 [mutable removeAllObjects]; //将字典中原来的元素替换为另一个字典中的元素 [mutable setDictionary:otherDictionary];   //快速根据key取出对应的value;   NSString *s1 = dictionary[@"name"];//[dictionary objectForKey:@"name"]   NSLog(@"%@",s1);   NSString *s2 = dictionary[@"age"];   NSLog(@"%@",s2);

3,集合(NSSet和NSMutableSet)

1).集合:无序,不能添加重复元素

2).可变集合是不可变集合的子类,包含父类的所有方法,同时可变集合增加了删除,修改,添加操作.

①不可变集合常见操作.

//初始化方法 NSSet *set = [[NSSet alloc] initWithObjects:@"aa",@"dd",nil]; //便利构造器方法   NSSet *set = [[NSSet alloc] initWithObjects:@"aa",@"dd",nil]; //计算元素个数 NSUInteger num = [set count]; NSLog(@"%ld",num); NSLog(@"%@",set); //获取集合中的元素 NSLog(@"%@",[set anyObject]); //快速遍历 for (NSString *temp in set) { NSLog(@"%@",temp); } //判断集合是否包含某对象 BOOL isContain = [set containsObject :@"dd"]; //判断两个集合是否相同 - (BOOL)isEqualToSet:(NSSet *)otherSet; //判断集合中的子串是否和传入的相同, - (BOOL)isSubsetOfSet:(NSSet *)otherSet; ②.可变集合操作 //创建对象 NSMutableSet *set = [NSMutableSet setWithObjects:@"aa",@"bb",@"cc",@"dd",nil]; NSMutableSet *set1 = [NSMutableSet setWithCapacity:1]; //添加 [set addObject:@"rrr"]; NSLog(@"%@",set); //删除   [set removeObject:@"aa"]; NSLog(@"%@",set); //删除所有 [set removeAllObjects]; NSLog(@"%@",set); //添加集合中的元素,通过数组 [set addObjectsFromArray:array]; //将集合中的元素替换成另一个集合的元素 [set setSet:otherSet];4.NSCountedSet

NSCountedSet的父类是NSMutableSet,所以继承了NSset和NSMutableSet里面的方法.

    

常见操作

NSCountedSet *countSet = [NSCountedSet setWithObjects: @"aa",@"bb",@"cc",@"dd",@"ee",@"aa",nil]; //数组中的重复个数 NSCountedSet *count = [[NSCountedSet alloc] initWithCapacity:1]; NSUInteger count = [countSet countForObject:@"aa"]; NSLog(@"%ld",count); //添加元素 - (void)addObject:(id)object; //移出对象 - (void)removeObject:(id)object; 例题:有100个数,每个数取值范围为20 - 55 ,找出其中重复的数,重复次数. NSCountedSet *countSet = [NSCountedSet setWithCapacity:100]; for (int i = 0;i < 100; i++) { int random = arc4random() % (55 - 22 + 1) + 20; printf("%d ",random); [countSet addObject:@(random)]; } for (NSNumber *num in countSet) { NSUInteger count = [countSet countForObject:num];//记录重复的次数. if (count > 1) { NSLog(@"%d,重复次数为%ld",[num intValue],count); } } 总结:字典,集合.数组.的相同点和不同点 /** * * 相同点:都属于collection(集合),用来存储多个对象,并不限制对象的类型 * 不同点: * 1.作用: * 数组管理有序的集合 * 字典管理具有一一对应关系的数据集合 * 集合管理无序并且互异性的元素的集合. * 2.特点 * 数组:有序,并且元素可以重复. * 字典:无序,每一个元素都是一对键值对,一个key只能对应一个value,但是一个value可以对应多个key,key是唯一的. * 集合:无序,互异性(元素不能重复,但会记录重复次数.) * 3.取值方式: * 数组:通过下标获取对应元素. * 字典:通过key获取对用的value. * 集合:随机取值.anyObject,集合的效率最大化. * 4.快速遍历:for in遍历时不能修改遍历的集合 * 数组:遍历出来的时数组中的元素 * 字典:遍历出来的是字典中的key,通过key,取出对应的value值. * 集合:遍历出集合中的元素. * 5.创建对象的方法 1.初始化方法 2.便利构造器 * 数组 : initWithObjects: arrayWithObjects: * 字典 : initWithObjectsAndKeys: dictionaryWithObjectsAndKeys: * 集合 : initWithObjects: setWithObjects: */


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3